﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//int x = 99;
//namespace bit
//{
//	int x = 66;
//	namespace fang
//	{
//		int add(int x, int y)
//		{
//			return x + y;
//		}
//	}
//	namespace jian
//	{
//		int p = 99;
//	}
//
//}
//int main()
//{
//	/*int x = 3;
//	printf("%d \n", bit::x);
//	printf("%d \n", x);
//	printf("%d \n", ::x);*/
//	printf("%d ", bit::fang::add(45,50));
//	printf("%d ", bit::x);
//	printf("%d ", bit::jian::p);
//}

//namespace bit
//{
//	int a = 10;
//	int b = 30;
//}
//using bit::a;
//int main()
//{
//	printf("%d \n", a);
//	printf("%d \n", a);
//	printf("%d \n", bit::b);
//
//}
#include<iostream>
//using namespace std;
//using std::cout;
//using std::endl;
//int main()
//{
//	//int a = 10;
//	////std::cout << a << "\n"<< '\n';
//	//std::cout << a << std::endl;
//	//char b = 'p';
//	//std::cout << b << std::endl;
//	//float r = 5.12;
//	//std::cout << r << std::endl;
//
//	int a = 0;
//	int b = 0;
//
//	std::cin >> a >> b;
//
//	cout << a << " " << b << endl;
//
//
//}
//int main()
//{
//	int a = 0;
//	int& b = a;
//	int& c = b;
//	c++;
//	c++;
//
//	std::cout << b << " " << c << std::endl;
//}
//using namespace std;

//#include <stdio.h> 
//
//
//#include <stdlib.h>
//int rand = 10;
//
//int main()
//{
//	// 编译报错：error C2365: “rand”: 重定义；以前的定义是“函数” 
//	printf("%d\n", rand);
//	return 0;
//}



////命名空间
//namespace bit// bit是命名空间的名字，⼀般开发中是⽤项⽬名字做命名空间名。
//{
//    //命名空间中可以定义变量 / 函数 / 类型
//	//命名空间域
//	int add = 99;
//
//}
////全局域
//int add = 10;
//
//int main()
//{
//	//局部域
//	int add = 55;
//	//这里访问的是全局变量
//	printf("%d \n", add);
//	//这里访问的是命名空间的变量
//	printf("%d \n", bit::add);
//
//
//}

//命名空间可以嵌套
//namespace bit
//{
//	//在bit命名空间嵌套a和b的命名空间
//	namespace a
//	{
//		int tab = 99;
//		int add(int x, int y)
//		{
//			return x + y;
//		}
//	}
//
//	namespace b
//	{
//		int tab = 10;
//		int att(int x, int y)
//		{
//			return x * y;
//		}
//	}
//}
//
//int main()
//{
//	printf("%d \n",bit::a::tab);
//	printf("%d \n",bit::b::tab);
//
//	printf("%d \n", bit::a::add(13, 23));
//	printf("%d \n", bit::b::att(5, 5));
//}

int x = 0;//全局域

namespace bit
{
	int x = 1;//命名空间域
}

void func()
{
	//这个局部域只能在当前局部域内访问
	int x = 2;//局部域
}

int main()
{
	int x = 3;//局部域

	printf("%d\n", x);//这个会在局部搜索，再到全局搜索
	printf("%d\n", bit::x);//访问命名空间域
	printf("%d\n", ::x);//访问全局

	return 0;
}
//局部域出了生命周期就销毁了
//命名空间域就是为了跟全局域进行隔离的，不能把命名空间域定义在局部

